home *** CD-ROM | disk | FTP | other *** search
/ Aminet 41 / Aminet 41 (2001)(Schatztruhe)[!][Feb 2001].iso / Aminet / util / cli / ALeXcompare.lha / cmp / update1.rexx < prev    next >
OS/2 REXX Batch file  |  2000-11-18  |  2KB  |  93 lines

  1. /*
  2. ** Update only all neccesary files from dir A -> dir B
  3. **                 ©1999/2000 ALeX Kazik
  4. */
  5.  
  6. /* IMPORTANT: the src/dst dir MUST end with a colon or slash and MUST NOT be empty! */
  7.  
  8. /* SOURCE directory */
  9. src = 'a/'
  10.  
  11. /* DESTINATION directory */
  12. dst = 'b/'
  13.  
  14. /* the script to create, and which will be executed */
  15. script = 'T:script'
  16.  
  17. /* SKIP the first N bytes */
  18. skip = 0
  19.  
  20. /* temporary file */
  21. tmpfile = 'T:update.tmp'
  22.  
  23. /*
  24. ** The main-program
  25. */
  26.  
  27. ADDRESS COMMAND
  28.  
  29. cmp 'A="' || src || '" B="' || dst || '" all nostat norc skipfirstnbytes=' || SKIP || ' newdir=10 newfile revbdir detail lformat %r%R%n >"' || TMPFILE || '"'
  30. IF RC >= 20 THEN DO
  31.     SAY 'Error while executing cmp'
  32.     EXIT RC
  33. END
  34.  
  35. CALL OPEN(tmp, tmpfile, 'read')
  36. CALL OPEN(scr, script, 'write')
  37.  
  38. eq = 0
  39.  
  40. DO UNTIL EOF(tmp)
  41.   act = READCH(tmp, 1)
  42.   file = READLN(tmp)
  43.   IF act = '' THEN
  44.     BREAK
  45.   ELSE IF act = 'Q' THEN
  46.     eq = eq + 1
  47.   ELSE IF (act = 'A') | (act = '5') | (act = '9') THEN DO
  48.     SAY 'File to remove: ' || file
  49.     CALL WRITELN(scr, 'delete "' || dst || file || '" quiet')
  50.   END
  51.   ELSE IF (act = '4') | (act = '8') THEN DO
  52.     SAY 'Dir to remove: ' || file
  53.     CALL WRITELN(scr, 'delete "' || dst || file || '" quiet')
  54.   END
  55.   ELSE IF (act = 'B') | (act = '3') | (act = '7') THEN DO
  56.     SAY 'New File: ' || file
  57.     CALL WRITELN(scr, 'copy "' || src || file || '" "' || dst || file || '"')
  58.   END
  59.   ELSE IF (act = '2') | (act = '6') THEN DO
  60.     SAY 'New Dir: ' || file
  61.     CALL WRITELN(scr, 'makedir "' || dst || file || '"')
  62.   END
  63.   ELSE IF (act = 'E') | (act = '0') | (act = '1') THEN DO
  64.     SAY 'Error/Warning at dir/file: ' || file
  65.     EXIT 20
  66.   END
  67.   ELSE IF (act = 'L') | (act = 'C') | (act = 'D') | (act = 'S') | (act = 'T') THEN DO
  68.     SAY 'File to Update: ' || file
  69.     CALL WRITELN(scr, 'copy "' || src || file || '" "' || dst || file || '"')
  70.   END
  71.   ELSE DO
  72.     SAY 'Unknown Symbol >' || act || '<'
  73.     CALL CLOSE(tmp)
  74.     CALL CLOSE(scr)
  75.     EXIT 20
  76.   END
  77. END
  78.  
  79. SAY eq || ' Equal files.'
  80.  
  81. CALL CLOSE(tmp)
  82. CALL CLOSE(scr)
  83.  
  84. /*
  85. ** executing the changes
  86. */
  87.  
  88. execute '"' || script || '"'
  89.  
  90. /*
  91. ** That's all.
  92. */
  93.